/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: DatabaseId.java,v 1.1 2006/05/06 09:00:26 ckaestne Exp $ */ package com.sleepycat.je.dbi; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.log.LogReadable; import com.sleepycat.je.log.LogUtils; import com.sleepycat.je.log.LogWritable; /** * DatabaseImpl Ids are wrapped in a class so they can be logged. */ public class DatabaseId implements Comparable, LogWritable, LogReadable { /** * The unique id of this database. */ private int id; /** * */ public DatabaseId(int id) { this.id = id; } /** * Uninitialized database id, for logging. */ public DatabaseId() { } /** * @return id value */ public int getId() { return id; } /** * @return id as bytes, for use as a key */ public byte[] getBytes() throws DatabaseException { try { return toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException UEE) { throw new DatabaseException(UEE); } } /** * Compare two DatabaseImpl Id's. */ public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof DatabaseId)) { return false; } return ((DatabaseId) obj).id == id; } public int hashCode() { return id; } public String toString() { return Integer.toString(id); } /** * see Comparable#compareTo */ public int compareTo(Object o) { if (o == null) { throw new NullPointerException(); } DatabaseId argId = (DatabaseId) o; if (id == argId.id) { return 0; } else if (id > argId.id) { return 1; } else { return -1; } } /* * Logging support. */ /** * @see LogWritable#getLogSize */ public int getLogSize() { return LogUtils.getIntLogSize(); } /** * @see LogWritable#writeToLog */ public void writeToLog(ByteBuffer logBuffer) { LogUtils.writeInt(logBuffer, id); } /** * @see LogReadable#readFromLog */ public void readFromLog(ByteBuffer itemBuffer, byte entryTypeVersion) { id = LogUtils.readInt(itemBuffer); } /** * @see LogReadable#dumpLog */ public void dumpLog(StringBuffer sb, boolean verbose) { sb.append("<dbId id=\""); sb.append(id); sb.append("\"/>"); } /** * @see LogReadable#logEntryIsTransactional */ public boolean logEntryIsTransactional() { return false; } /** * @see LogReadable#getTransactionId */ public long getTransactionId() { return 0; } }